﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ESEMLFramework;
using System.Windows.Forms;

namespace ESEMLFramework
{
    class Program
    {
        static void Main(string[] args)
        {
            ControlledExperiment ce = new ControlledExperiment("PROJETO DE EXPERIMENTO", "Caracterizacao do uso da ESEML para especificacao de projetos de experimentos em engenharia de software");

            //Dependent Variables
            ce.DependentVariables = new List<DependentVariable>();
            ce.DependentVariables.Add(new DependentVariable("Dependent variable name", "Dependent variable description"));
            ce.DependentVariables.Add(new DependentVariable("Dependent variable name", "Dependent variable description"));

            //Hypothesis
            ce.Hypothesis = new List<Hypothesis>();
            ce.Hypothesis.Add(new Hypothesis("Hypothesis name", "Hypothesis description", "Hypothesis expression", HypothesisType.Null));

            //Subject
            ce.Subject = new Subject("Os participantes desse estudo serão estudantes de pós-graduação strictu sensu (mestrado ou doutorado) na disciplina de engenharia de software experimentao e serão divididos em dois grupos de cinco participantes. odos os participantes estarão cientes que estarão participando de um estudo experimental.");

            //Object
            ce.ObjectCE = new ObjectCE("Object description");

            //Validity
            ce.Validities = new List<Validity>();
            ce.Validities.Add(new Validity("Validity description", "Validity threat description", "Validity mitigation description", ValidityType.Internal));

            //Goals
            ce.Goals = new List<Goal>();
            //Goal b67c9cda-0493-4f25-859f-2a26b21a98c6

            ce.Goals.Add(new Goal("Goal description"));
            ce.Goals[ce.Goals.Count - 1].Questions = new List<Question>();
            //Question e4cc132a-5a41-4872-8fde-eb89302b0e81
            ce.Goals[ce.Goals.Count - 1].Questions.Add(new Question("Question description"));
            ce.Goals[ce.Goals.Count - 1].Questions[ce.Goals[ce.Goals.Count - 1].Questions.Count - 1].Metrics = new List<Metric>();
            //Metric 76cca289-8d15-454b-be27-095728a95e82
            ce.Goals[ce.Goals.Count - 1].Questions[ce.Goals[ce.Goals.Count - 1].Questions.Count - 1].Metrics.Add(new Metric("Metric name", "Metric description", "Metric unit description"));

            //Design
            ce.Design = new Design("Design name", "Design description");

            //AdhesionTest
            ce.AdhesionTest = new AdhesionTest("Adhesion description", "Distribution description");

            //HypothesisTest
            ce.HypothesisTest = new HypothesisTest("Hypothesis test name", "Hypothesis test description", "Hypothesis test significance");

            //Parameters
            ce.Parameters = new List<Parameter>();

            //Factor
            ce.Factors = new List<Factor>();
            ce.Factors.Add(new Factor("Factor name", "Factor description"));
            ce.Factors[ce.Factors.Count - 1].Treatments = new List<Treatment>();

            ce.Factors[ce.Factors.Count - 1].Treatments.Add(new Treatment("Treatment name", "Treatment description"));
            ce.Factors[ce.Factors.Count - 1].Treatments.Add(new Treatment("Treatment name", "Treatment description"));

            ESEMLFramework.MainForm mf = new ESEMLFramework.MainForm(ce);
            Application.Run(mf);

        }
    }
}
